from functools import wraps
import allure
import logging


# 定义装饰器
def kw_step(func):
    """
    装饰器，用于记录 allure 步骤和日志信息。
    """
    # 使用 tunctools.wraps保留原函数名
    @wraps(func)
    def wrapper(self, step):
        # 记录 allure 步骤
        with allure.step(f"第{step['step_num']}步: {step['step_name']}"):
            # 输出日志信息
            logging.info(f"第{step['step_num']}步: {step['step_name']} - 元素({step['by']}, {step['value']}) - 数据({step['data']}) - 索引({step['index']})")
            # 调用原函数
            return func(self, step)
    # 返回包装函数
    return wrapper
